持續整合與持續部署(CI/CD)已成為現代軟體開發的重要部分。透過 GitLab CI/CD,您可以自動化軟體建置、測試以及部署流程,並確保交付穩定可靠的應用程式。本文是用兩個docker來完成,分別是用gitlab runner連接本機的docker位置,就是前幾天toml中設定,用來佈署docker,第二個是透過ssh的方式連接要佈署的k8s的主機方式,也可以通通都用一種方式來達成,因為測試程式沒有完成,所以並未加入此流程。
這份gitlab.ci,每當main改動時,可以完成打包docker到docker hub,然後從docker hub拉下佈署到minikube,可以自己更改變數及指令,ssh是使用密碼登錄,會產生安全性問題,也可以設定token登陸會比較安全,tag要改成在runner設定時輸入的tag name
其他變數設定在
variables:
FOLDER_NAME: "repository name"
DOCKER_IMAGE: "docker hub"
stages:
- build
- deploy
build:
stage: build
image: docker:latest
script:
- docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
- docker build -t $DOCKER_IMAGE .
- docker push $DOCKER_IMAGE
- docker rmi $DOCKER_IMAGE
only:
- main
tags:
- docker-runner
deploy:
stage: deploy
image: ubuntu:latest
before_script:
- apt-get update -qy
- apt-get install -y sshpass
script:
- sshpass -p $SSH_PASSWORD ssh -o StrictHostKeyChecking=no -p 22 $SSH_NAME "kubectl set image deployment/$FOLDER_NAME $FOLDER_NAME=$DOCKER_IMAGE"
only:
- main
tags:
- docker-runner
透過 GitLab CI/CD,您可以實現從建置到部署的完整流程自動化。這不僅節省了開發和部署時間,還確保了程式碼的品質和應用程式的穩定性。藉由適當的設定和變數管理,您可以根據您的需求進行自定義,並實現持續交付的目標。